/**
 * Copyright (c) 2016-2019 人人开源 All rights reserved.
 * <p>
 * https://www.renren.io
 * <p>
 * 版权所有，侵权必究！
 */

package com.tangxz.chat.common.utils;

import java.util.HashMap;
import java.util.Map;


public class R extends HashMap<String, Object> {
    static class HttpStatus {
        static int SC_CONTINUE = 100;
        static int SC_SWITCHING_PROTOCOLS = 101;
        static int SC_PROCESSING = 102;
        static int SC_OK = 200;
        static int SC_CREATED = 201;
        static int SC_ACCEPTED = 202;
        static int SC_NON_AUTHORITATIVE_INFORMATION = 203;
        static int SC_NO_CONTENT = 204;
        static int SC_RESET_CONTENT = 205;
        static int SC_PARTIAL_CONTENT = 206;
        static int SC_MULTI_STATUS = 207;
        static int SC_MULTIPLE_CHOICES = 300;
        static int SC_MOVED_PERMANENTLY = 301;
        static int SC_MOVED_TEMPORARILY = 302;
        static int SC_SEE_OTHER = 303;
        static int SC_NOT_MODIFIED = 304;
        static int SC_USE_PROXY = 305;
        static int SC_TEMPORARY_REDIRECT = 307;
        static int SC_BAD_REQUEST = 400;
        static int SC_UNAUTHORIZED = 401;
        static int SC_PAYMENT_REQUIRED = 402;
        static int SC_FORBIDDEN = 403;
        static int SC_NOT_FOUND = 404;
        static int SC_METHOD_NOT_ALLOWED = 405;
        static int SC_NOT_ACCEPTABLE = 406;
        static int SC_PROXY_AUTHENTICATION_REQUIRED = 407;
        static int SC_REQUEST_TIMEOUT = 408;
        static int SC_CONFLICT = 409;
        static int SC_GONE = 410;
        static int SC_LENGTH_REQUIRED = 411;
        static int SC_PRECONDITION_FAILED = 412;
        static int SC_REQUEST_TOO_LONG = 413;
        static int SC_REQUEST_URI_TOO_LONG = 414;
        static int SC_UNSUPPORTED_MEDIA_TYPE = 415;
        static int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
        static int SC_EXPECTATION_FAILED = 417;
        static int SC_INSUFFICIENT_SPACE_ON_RESOURCE = 419;
        static int SC_METHOD_FAILURE = 420;
        static int SC_UNPROCESSABLE_ENTITY = 422;
        static int SC_LOCKED = 423;
        static int SC_FAILED_DEPENDENCY = 424;
        static int SC_INTERNAL_SERVER_ERROR = 500;
        static int SC_NOT_IMPLEMENTED = 501;
        static int SC_BAD_GATEWAY = 502;
        static int SC_SERVICE_UNAVAILABLE = 503;
        static int SC_GATEWAY_TIMEOUT = 504;
        static int SC_HTTP_VERSION_NOT_SUPPORTED = 505;
        static int SC_INSUFFICIENT_STORAGE = 507;

    }

    private static final long serialVersionUID = 1L;

    public R() {
        put("code", 0);
        put("msg", "success");
    }

    public static R error() {
        return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, "未知异常，请联系管理员");
    }

    public static R error(String msg) {
        return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, msg);
    }

    public static R error(int code, String msg) {
        R r = new R();
        r.put("code", code);
        r.put("msg", msg);
        return r;
    }

    public static R ok(String msg) {
        R r = new R();
        r.put("msg", msg);
        return r;
    }

    public static R ok(Map<String, Object> map) {
        R r = new R();
        r.putAll(map);
        return r;
    }

    public static R ok() {
        return new R();
    }

    @Override
    public R put(String key, Object value) {
        super.put(key, value);
        return this;
    }

    public Integer getCode() {

        return (Integer) this.get("code");
    }

}
